[レポート] Amazon MWAA と AWS Step Functions を比べてみた #AWSreInvent #API307
こんにちは、muroです。AWS事業本部 サービス開発室でopswitchの開発・運用を担当しています。opswitchは今年の1月にApache Airflowベースのアーキテクチャから、AWS Step Functionsに移行しました。
今回 re:Invent で Amazon MWAA と AWS Step Functions のそれぞれの長所短所を学ぶセッションがあったので、自身の理解度を確認するために受講してきました。
セッションの概要
タイトル
Comparing Amazon MWAA and AWS Step Functions
概要
Organizations looking to orchestrate ETL data pipelines on AWS are looking for tools that best meet their requirements. In this chalk talk, learn about the pros and cons of orchestrating ETL pipelines with Amazon MWAA and AWS Step Functions.
AWS 上で ETL データ パイプラインを調整しようとしている組織は、要件に最も適したツールを探しています。このチョークトークでは、Amazon MWAA と AWS Step Functions を使用して ETL パイプラインをオーケストレーションすることの長所と短所について学びます。
スピーカー
- Fernando Gamero
- Parnab Basak
レベル
300 上級
利用するAWSサービス
AWS Step Functions, Amazon Managed Workflows for Apache Airflow (MWAA)
セッションの内容
AWS Step FunctionsとMWAAは、どちらも汎用的なマネージドオーケストレーションサービスです。セッションでは、まずそれぞれのサービスの概要について説明があり、続いてユースケースに基づいてどちらのサービスがより適しているかを確認しました。途中でセッション受講者からの質問にも回答しながら最後に両サービスの長所・短所についてまとめられました。
AWS Step Functions の概要
AWS Step Functionsではステートマシンと呼ばれるワークフローを定義して実行します。ステートマシンはWEBのUIでドラッグ&ドロップで作成できる他、Amazon State LanguageというJSON形式で記述したり、CDKで記述したりすることができます。ワークフローはStandardタイプとExpressタイプが選択できます。
※詳しくはデベロッパーガイドをご覧ください。
Amazon MWAA の概要
MWAAではDAGと呼ばれるPythonコードによって書かれたファイルでワークフローを定義します。MWAAではデータソースを扱うSensorや処理を実行するOperatorが様々なAWSサービスに対応して既に実装されているため、ユーザーは少ないコードでDAGを実装することができます。
※詳しくはユーザーガイドをご覧ください。
ユースケース
ServerlessVideoというサーバーレス・動画ストリーミングサービスに機能拡張を施します。二つの機能拡張に対して、どちらのサービスが適しているかを検討します。
拡張1
日次で生成されるクリックデータを分析できるようにします。クリックデータは外部のシステムに保存されています。生のクリックデータとPARQUETに加工したデータをS3バケットに保存します。
この場合は Amazon MWAAを採用します。Sensorを使って外部システムのファイルを参照し、S3 Operatorを使って生データをS3バケットに保存します。同様に既に実装された Operator を利用してデータカタログの更新、PARQUETデータへの変換と保存を行います。ユーザーは少ないコードでこれを実装することができます。
拡張2
次はユーザーの視聴履歴にもとづいて、レコメンデーションを提供します。ユーザーの視聴履歴はリアルタイムで収集し、DynamoDBテーブルに保存します。
この場合は AWS Step Functions を採用します。Amazon MWAAでも同様の実装はできますが、同時実行に対するオートスケーリングや低いレイテンシーが求められるため、AWS Step Functions を採用します。
まとめ
Amazon MWAA は定期的で同時実行数や並列数が一定の処理に適しています。 AWS Step Functions では同時実行数や並列数が予測できない場合にも対応できる上、ほぼリアルタイムに処理させることもできます。
※質問者との議論が盛り上がり、まとめは駆け足になってしまいました。
セッションを受講して
AWS Step Functions と Amazon MWAA の両サービスの違いについて、同時実行数に対する向き・不向きやコスト面での違い等は何となく理解していたつもりでしたが、今回改めて学んだことで今後は両サービスの長所を活かして選定や実装を行うことができそうです。また、チョークトーク形式で行われたこのセッションで開発者たちが次々に質問していく様を見てとても刺激を受けました。私も今回学んだことを製品・サービスの開発に活かしていこうと思います。